home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr49 / 109_01.zip / PRMDMP.C < prev    next >
Text File  |  1993-06-26  |  3KB  |  81 lines

  1.  
  2.  /* C Program to read in an EPROM (2716-58) and display
  3. in hex, the object dump. Displays checksum at end. Also
  4. states whether the EPROM has been erased correctly (all FFH
  5. data).  I would be glad to make available
  6.  the schematic for the hardware adaptor
  7. that uses 2 1/2 paralell IO ports.  The total cost in parts
  8. is from $5-10.00.  The same hardware will allow programming
  9. of 2716-58 style EPROMS. I have a Z-80 assembly language
  10. prom burner but am in the process of converting it into C.  
  11. Larry Langrehr
  12. 2069 N. Humboldt Blvd.
  13. Chicago, Il. 60647  Eve phone (312) 278-5826
  14. */
  15.  
  16. #define CNTRL 4
  17. #define DATA 2
  18. #define RESET 17
  19. #define IDLE 1
  20. #define CLKHI 9
  21. #define ROMSIZ 2048
  22. char string[2];
  23. int v[ROMSIZ], lincnt;
  24. main ()
  25. {
  26.                rstcntr ();
  27.                if (read() == 1)  {   /*    Check if erased  */
  28.                     printf("\nProm Erased.\n");
  29.                     exit ();
  30.                }
  31.                else
  32.             getsize ();
  33.                     display ();
  34. }
  35. rstcntr ()   /*  reset address counter */
  36. {
  37.                outp(CNTRL,RESET);
  38.                outp(CNTRL,IDLE);
  39. }
  40. getsize ()   /*  find out how many lines to dump  */
  41. int k;
  42. {
  43.                printf("\nEnter # of pages to dump\n");
  44.                k = atoi(gets(string));
  45.                lincnt = k*16;
  46. }
  47. read ()     /*  read the entire prom into ram  */
  48. int i, erasflg;
  49. {
  50.     erasflg = 1;
  51.     for(i=0; i<ROMSIZ; ++i)   {
  52.         v[i] = inp(DATA);
  53.         if (v[i] != 255)
  54.             erasflg = 0;
  55.         clockpulse ();
  56.     }
  57.     return erasflg;
  58. }
  59. display ()
  60. int linadrs, chksum;
  61. int bytadrs, bytcnt;
  62. int i,j;
  63. {
  64.                chksum = bytadrs = linadrs = 0;
  65.                bytcnt = 16;
  66.                for(i=0; i<lincnt; ++i)   {
  67.                   printf("\n%4.0x ", linadrs);
  68.                   linadrs += bytcnt;
  69.                   for(j=0; j<bytcnt; ++j)  {
  70.                       chksum += v[bytadrs];
  71.                       printf("%2.0x ", v[bytadrs++]);
  72.                   }
  73.               }
  74.               printf("\n\nChecksum = %x", chksum);
  75. }
  76. clockpulse ()
  77. {
  78.               outp(CNTRL,CLKHI);
  79.               outp(CNTRL,IDLE);
  80. }
  81.